import cv2 as cv
import numpy as np



def searchDualLaserPoint(img):
    imgHSV = cv.cvtColor(img,cv.COLOR_BGR2HSV)
    redLaserLower1 = np.array([0,80,150])
    redLaserUpper1 = np.array([30,255,255])
    redLaserLower2 = np.array([150,50,200])
    redLaserUpper2 = np.array([180,255,255])
    greenLaserLower1 = np.array([70,75,220])
    greenLaserUpper1 = np.array([110,255,255])
    greenLaserLower2 = np.array([70,90,50])
    greenLaserUpper2 = np.array([110,255,255])

    redLaserImg1 = cv.inRange(imgHSV,redLaserLower1,redLaserUpper1)
    redLaserImg2 = cv.inRange(imgHSV,redLaserLower2,redLaserUpper2)
    redLaserImg = cv.bitwise_or(redLaserImg1,redLaserImg2)
    greenLaserImg1 = cv.inRange(imgHSV,greenLaserLower1,greenLaserUpper1)
    greenLaserImg2 = cv.inRange(imgHSV,greenLaserLower2,greenLaserUpper2)
    greenLaserImg = cv.bitwise_or(greenLaserImg1,greenLaserImg2)
    kernel = np.ones((3,3))
    redLaserImg = cv.morphologyEx(redLaserImg,cv.MORPH_OPEN,kernel)
    redLaserImg = cv.morphologyEx(redLaserImg,cv.MORPH_CLOSE,kernel)
    
    greenLaserImg = cv.morphologyEx(greenLaserImg,cv.MORPH_OPEN,kernel)
    greenLaserImg = cv.morphologyEx(greenLaserImg,cv.MORPH_CLOSE,kernel)

    redLaserMoment = cv.moments(redLaserImg)
    greenLaserMoment = cv.moments(greenLaserImg)



    return (
        (redLaserMoment['m10'] / redLaserMoment['m00'],redLaserMoment['m01'] / redLaserMoment['m00']) if redLaserMoment['m00'] != 0 else None,
        (greenLaserMoment['m10'] / greenLaserMoment['m00'],greenLaserMoment['m01'] / greenLaserMoment['m00']) if greenLaserMoment['m00'] != 0 else None
        )